package edu.ues21.tcs.ecommerce2011.mvc.dao;

import java.util.List;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.transaction.annotation.Transactional;

import edu.ues21.tcs.ecommerce2011.mvc.model.Pedido;
/**
*
* @author eandre fmantaras
*/
@Transactional
public class PedidoDAOImpl implements PedidoDAO{

	// Declaro el hibernate template.
	private HibernateTemplate hibernateTemplate;

	// Le seteo el sessionFactory que le inyecto al hibernateTemplate.
	public void setSessionFactory(SessionFactory sessionFactory) {
		this.hibernateTemplate = new HibernateTemplate(sessionFactory);
	}

	public void save(Pedido pedido) {
	
		hibernateTemplate.merge(pedido);
	}

	public void delete(Integer idPedido) {

		Pedido pedido = (Pedido) hibernateTemplate.get(Pedido.class,idPedido);
		
		hibernateTemplate.delete(pedido);
	}

	@SuppressWarnings("unchecked")
	@Transactional(readOnly = true)
	public List<Pedido> getAll() {

		return hibernateTemplate.find("from Pedido");
	}

	@SuppressWarnings("unchecked")
	@Transactional(readOnly = true)
	public List<Pedido> getAll(Integer cuit) {

		return hibernateTemplate.find("from Pedido where cliente="+cuit);
	}
	
	@Transactional(readOnly = true)
	public Pedido getPedido(Integer idPedido) {

		return hibernateTemplate.get(Pedido.class, idPedido);
	}
	
	@Override
	public Pedido getUltimoPedido(Integer cliente) {
		@SuppressWarnings("unchecked")
		List<Pedido> p =  hibernateTemplate.find("from Pedido where cliente='" + cliente + "'");
		return p.get((p.size())-1);
	}


}
